聚合查询


  • 使用 .aggregate() 进行聚合查询
  • .aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典
  • 键的名称是聚合值的标识符,值是计算出来的聚合值
  • 键的名称默认是按照字段名和聚合函数的名称拼接而成

  • 导入聚合函数

from django.db.models import Sum, Avg, Max, Min, Count

  • 语法: .aggregate(聚合函数方法名('字段名'))

from app01.models import *
from django.db.models import Sum, Avg, Max, Min, Count

p_data = Student.objects.all().aggregate(Sum('age'), Avg('age'), Max('age'), Min('age'), Count('id'))
print(p_data)  # {'age__avg': 24.0, 'age__sum': 96, 'id__count': 4, 'age__min': 18, 'age__max': 30}

  • 指定键的名称

    • 语法: .aggregate(自定义key的名称=聚合函数方法名('字段名'))

from app01.models import *
from django.db.models import Sum, Avg, Max, Min, Count

p_data = Student.objects.all().aggregate(a_s=Sum('age'), a_a=Avg('age'), a_max=Max('age'), a_min=Min('age'), a_c=Count('id'))
print(p_data)  # {'a_s': 96, 'a_min': 18, 'a_a': 24.0, 'a_max': 30, 'a_c': 4}